package com.xcm.validator;

import com.xcm.constant.SysRoleConstants;
import com.xcm.model.SysRole;
import org.apache.commons.lang3.StringUtils;

import java.util.regex.Pattern;

/**
 * 角色相关验证
 *
 * @author 林强
 * @date 2018-04-12 11:15
 */
public class SysRoleValidator {

    /**
     * 正则表达式：验证角色名称（中文数字字母下划线 ，1-20位）
     */
    public static final String REGEX_ROLE_NAME = "^[\\s\\S]{1,32}$";

    /**
     * 正则表达式：验证角色描述（中文、字母、数字 ，1-255位）
     */
    public static final String REGEX_ROLE_DESC = "^[\\s\\S]{1,255}$";

    /**
     * 校验角色名称
     *
     * @param roleName
     * @return 校验通过返回true，否则返回false
     */
    public static boolean isRoleName(String roleName) {
        return Pattern.matches(REGEX_ROLE_NAME, roleName);
    }

    /**
     * 校验角色描述
     *
     * @param roleDesc
     * @return 校验通过返回true，否则返回false
     */
    public static boolean isRoleDesc(String roleDesc) {
        return Pattern.matches(REGEX_ROLE_DESC, roleDesc);
    }

    /**
     * 检查角色表单数据
     *
     * @param sysRole
     * @return 成功返回空字符，失败返回对应的提示语句
     */
    public static String validateSysRole(SysRole sysRole) {
        if (null == sysRole) {
            return SysRoleConstants.VALIDATE_NO_SYS_ROLE;
        }
        //角色名称
        if (StringUtils.isBlank(sysRole.getRoleName())) {
            return SysRoleConstants.VALIDATE_NO_SYS_ROLE_NAME;
        }
        if (!isRoleName(sysRole.getRoleName())) {
            return SysRoleConstants.VALIDATE_ROLE_NAME_ERROR;
        }
        //角色描述
        if (StringUtils.isNotBlank(sysRole.getRoleDesc()) && !isRoleDesc(sysRole.getRoleDesc())) {
            return SysRoleConstants.VALIDATE_ROLE_DESC_ERROR;
        }
        return "";
    }

    public static void main(String[] args) {
        boolean roleDesc = isRoleDesc("你好~");
        boolean isRoleName = isRoleName("你发斯蒂芬");
        System.out.println(roleDesc);
        System.out.println(isRoleName);
    }
}
